<?php
/**
 * equipos
 *
 * equipos_model.php
 * @author Hector Ruiz
 * @version 1.0
 * @copyright Hector Ruiz, 13 Noviembre, 2011
 * @package 1.0
 **/

class Equipos_model extends CI_Model {

    function __construct() {
        parent::__construct();
    }

    function read($table, $id_name, $id) {
        $this->db->where($id_name, $id);
        $query = $this->db->get($table);

        return $query->result_array();
    }

    function read_w($table, $where) {
        foreach($where as $k => $v) {
            $this->db->where($k, $v);
        }
        $query = $this->db->get($table);

        return $query;
    }

    function delete($table, $id_name, $id) {
        $result = 0;
        $result = $this->db->delete($table, array($id_name => $id));

        return $result;
    }

    function update($table, $id_name, $id, $data) {
        $result = 0;
        $result = $this->db->update($table, $data, array($id_name => $id));

        return $result;
    }

    function create($table, $data) {
        $id = 0;
        $this->db->insert($table, $data);
        $id = $this->db->insert_id();

        return $id;
    }

    function exists($table, $id_name, $id) {
        $exists = 0;
        $this->db->where($id_name, $id);
        $query = $this->db->get($table);
        if($query->num_rows() > 0) {
            $exists = 1;
        }

        return $exists;
    }

    function save($table, $id_name, $id, $data) {
        $exists = $this->exists($table, $id_name, $id);
        if($exists) {
            $result = $this->db->update($table, $data, array($id_name => $id));
        } else {
            $result = $this->db->insert($table, $data);
            $id = $this->db->insert_id();
        }

        return $id;
    }

    function save_asignacion($table, $id_name, $id, $usuario_red, $data) {
        $exists = 0;
        $this->db->where($id_name, $id);
        $this->db->where('usuarios_id', $usuario_red);
        $query = $this->db->get($table);
        if($query->num_rows() > 0) {
            $result = $this->db->update($table, $data, array($id_name => $id));
        } else {
            $result = $this->db->insert($table, $data);
            $id = $this->db->insert_id();
        }
        $tables = array('computadoras' => 'computadoras_id','monitores' => 'monitores_id','teclados' => 'teclados_id','ratones' => 'ratones_id','impresoras' => 'impresoras_id','escaners' => 'escaners_id','telefonos' => 'telefonos_id','switches' => 'switches_id','routers' => 'routers_id','cablemodems' => 'cablemodems_id','emtas' => 'emtas_id','transcievers' => 'transcievers_id','access_points' => 'access_points_id','accesorios' => 'accesorios_id');
        foreach($tables as $k=>$v) {
            if($data[$v] > 0) {
                $this->db->set('id_asignacion', 1);
                $this->db->where('numero_serie', $data[$v]);
                $result = $this->db->update($k);
            }
        }


        return $id;
    }

    function get_list($table = "", $where = "", $order = "", $limit = "") {
        if($where) {
            if(is_array($where)) {
                if(!empty($where)) {
                    foreach($where as $k => $v) {
                        $this->db->where($k, $v);
                    }
                }
            }
        }
        if($order) {
            if(is_array($order)) {
                if(!empty($order)) {
                    foreach($order as $v) {
                        $this->db->order_by($v);
                    }
                }
            } else {
                $this->db->order_by($order);
            }
        }
        if($limit) {
            $tmp = $limit;
            $tmp = explode(',', $tmp);
            (count($tmp) > 1) ? $this->db->limit($tmp[0], $tmp[1]) : $this->db->limit($tmp[0]);
        }
        $query = $this->db->get($table);

        return $query->result_array();
    }

    function fields($table) {
        $fields = array();
        switch($table) {
            case 'computadoras':
                $fields['fecha_registro'] = "<font color='red'>Fecha de Registro (aaaa-mm-dd):</font>";
                $fields['tipo'] = "<font color = 'red'>Tipo:</fornt>";
                $fields['marca'] = "<font color='red'>Marca</font>:";
                $fields['modelo'] = "<font color='red'>Modelo</font>:";
                $fields['numero_serie'] = "<font color='red'>Numero de Serie</font>:";
                $fields['nombre_equipo'] = "<font color='red'>Nombre del Equipo:</font>";
                $fields['memoria'] = "<font color='red'>Memoria RAM </font>";
                $fields['disco_duro'] = "<font color='red'>Disco Duro</font>";
                $fields['tipo_procesador'] = "<font color='red'>Tipo de Procesador</font>:";
                $fields['velocidad_procesador'] = "<font color='red'>Velocidad de Procesador(GHz)</font>:";
                $fields['tipo_lector'] = "Tipo de Lector:";
                $fields['direccion_mac'] = "Direccion MAC:";
                $fields['direccion_ip'] = "Direccion IP:";
            break;
        case 'monitores':
                $fields['fecha_registro'] = "Fecha de Registro:";
                $fields['tipo'] = "tipo:";
                $fields['marca'] = "<font color='red'>Marca</font>:";
                $fields['modelo'] = "<font color='red'>Modelo</font>:";
                $fields['numero_serie'] = "<font color='red'>Numero de Serie</font>:";
            break;
        case 'teclados':
                $fields['fecha_registro'] = "Fecha de Registro:";
                $fields['marca'] = "<font color='red'>Marca</font>:";
                $fields['modelo'] = "<font color='red'>Modelo</font>:";
                $fields['numero_serie'] = "<font color='red'>Numero de Serie</font>:";
            break;
        case 'ratones':
                $fields['fecha_registro'] = "Fecha de Registro:";
                $fields['marca'] = "<font color='red'>Marca</font>:";
                $fields['modelo'] = "<font color='red'>Modelo</font>:";
                $fields['numero_serie'] = "<font color='red'>Numero de Serie</font>:";
            break;
        case 'impresoras':
                $fields['fecha_registro'] = "Fecha de Registro:";
                $fields['tipo'] = "tipo:";
                $fields['marca'] = "<font color='red'>Marca</font>:";
                $fields['modelo'] = "<font color='red'>Modelo</font>:";
                $fields['numero_serie'] = "<font color='red'>Numero de Serie</font>:";
                $fields['direccion_mac'] = "Direccion MAC:";
                $fields['direccion_ip'] = "Direccion IP:";
            break;
        case 'escaners':
                $fields['fecha_registro'] = "Fecha de Registro:";
                $fields['marca'] = "<font color='red'>Marca</font>:";
                $fields['modelo'] = "<font color='red'>Modelo</font>:";
                $fields['numero_serie'] = "<font color='red'>Numero de Serie</font>:";
            break;
        case 'telefonos':
                $fields['fecha_registro'] = "<font color='red'>Fecha de Registro</font>:";
                $fields['marca'] = "<font color='red'>Marca</font>:";
                $fields['modelo'] = "<font color='red'>Modelo</font>:";
                $fields['numero_serie'] = "<font color='red'>Numero de Serie</font>:";
                $fields['direccion_mac'] = "<font color='red'>Direccion MAC</font>:";
            break;
        case 'switches':
                $fields['fecha_registro'] = "Fecha de Registro:";
                $fields['marca'] = "<font color='red'>Marca</font>:";
                $fields['modelo'] = "<font color='red'>Modelo</font>:";
                $fields['numero_serie'] = "<font color='red'>Numero de Serie</font>:";
                $fields['direccion_mac'] = "<font color='red'>Direccion MAC:</font>:";
                $fields['direccion_ip'] = "Direccion IP:";
            break;
        case 'routers':
                $fields['fecha_registro'] = "Fecha de Registro:";
                $fields['marca'] = "<font color='red'>Marca</font>:";
                $fields['modelo'] = "<font color='red'>Modelo</font>:";
                $fields['numero_serie'] = "<font color='red'>Numero de Serie</font>:";
                $fields['direccion_mac'] = "<font color='red'>Direccion MAC:</font>:";
                $fields['direccion_ip'] = "Direccion IP:";
            break;
        case 'cablemodems':
                $fields['fecha_registro'] = "Fecha de Registro:";
                $fields['marca'] = "<font color='red'>Marca</font>:";
                $fields['modelo'] = "<font color='red'>Modelo</font>:";
                $fields['numero_serie'] = "<font color='red'>Numero de Serie</font>:";
                $fields['direccion_mac'] = "Direccion MAC:";
                $fields['direccion_ip'] = "Direccion IP::";
            break;
        case 'emtas':
                $fields['fecha_registro'] = "Fecha de Registro:";
                $fields['marca'] = "<font color='red'>Marca</font>:";
                $fields['modelo'] = "<font color='red'>Modelo</font>:";
                $fields['numero_serie'] = "<font color='red'>Numero de Serie</font>:";
                $fields['direccion_mac'] = "<font color='red'>Direccion IP:</font>:";
                $fields['direccion_ip'] = "<font color='red'>Direccion IP:</font>:";
            break;
        case 'transcievers':
                $fields['fecha_registro'] = "Fecha de Registro:";
                $fields['marca'] = "<font color='red'>Marca</font>:";
                $fields['modelo'] = "<font color='red'>Modelo</font>:";
                $fields['numero_serie'] = "<font color='red'>Numero de Serie</font>:";
            break;
        case 'access_points':
                $fields['fecha_registro'] = "Fecha de Registro:";
                $fields['marca'] = "<font color='red'>Marca</font>:";
                $fields['modelo'] = "<font color='red'>Modelo</font>:";
                $fields['numero_serie'] = "<font color='red'>Numero de Serie</font>:";
                $fields['direccion_mac'] = "<font color='red'>Direccion MAC:</font>:";
                $fields['direccion_ip'] = "<font color='red'>Direccion IP:</font>:";
            break;
        case 'accesorios':
                $fields['fecha_registro'] = "Fecha de Registro:";
                $fields['tipo'] = "<font color='red'>Tipo</font>:";
                $fields['marca'] = "<font color='red'>Marca</font>:";
                $fields['modelo'] = "<font color='red'>Modelo</font>:";
                $fields['numero_serie'] = "<font color='red'>Numero de Serie</font>:";
                $fields['capacidad_dd'] = "<font color='red'>Capacidad de Disco Duro</font>:";
            break;
        }
        return $fields;
    }

    function rules($table, $fields) {
        switch($table) {
            case 'computadoras':
                $this->form_validation->set_rules('fecha_registro', $fields['fecha_registro'], 'required');
                $this->form_validation->set_rules('tipo', $fields['tipo'], 'required|is_natural_no_zero');
                $this->form_validation->set_rules('marca', $fields['marca'], 'required|is_natural_no_zero');
                $this->form_validation->set_rules('modelo', $fields['modelo'], 'required');
                $this->form_validation->set_rules('numero_serie', $fields['numero_serie'], 'required');
                $this->form_validation->set_rules('nombre_equipo', $fields['nombre_equipo'], 'required');
                $this->form_validation->set_rules('memoria', $fields['memoria'], 'required|is_natural_no_zero');
                $this->form_validation->set_rules('disco_duro', $fields['disco_duro'], 'required|is_natural_no_zero');
                $this->form_validation->set_rules('tipo_procesador', $fields['tipo_procesador'], 'required|is_natural_no_zero');
                $this->form_validation->set_rules('velocidad_procesador', $fields['velocidad_procesador'], 'required');
            break;
            case 'monitores':
                $this->form_validation->set_rules('fecha_registro', $fields['fecha_registro'], 'required');
                $this->form_validation->set_rules('marca', $fields['marca'], 'required|is_natural_no_zero');
                $this->form_validation->set_rules('modelo', $fields['modelo'], 'required');
                $this->form_validation->set_rules('numero_serie', $fields['numero_serie'], 'required');
            break;
            case 'teclados':
                $this->form_validation->set_rules('fecha_registro', $fields['fecha_registro'], 'required');
                $this->form_validation->set_rules('marca', $fields['marca'], 'required|is_natural_no_zero');
                $this->form_validation->set_rules('modelo', $fields['modelo'], 'required');
                $this->form_validation->set_rules('numero_serie', $fields['numero_serie'], 'required');
            break;
            case 'ratones':
                $this->form_validation->set_rules('fecha_registro', $fields['fecha_registro'], 'required');
                $this->form_validation->set_rules('marca', $fields['marca'], 'required|is_natural_no_zero');
                $this->form_validation->set_rules('modelo', $fields['modelo'], 'required');
                $this->form_validation->set_rules('numero_serie', $fields['numero_serie'], 'required');
            break;
            case 'impresoras':
                $this->form_validation->set_rules('fecha_registro', $fields['fecha_registro'], 'required');
                $this->form_validation->set_rules('tipo', $fields['tipo'], 'required|is_natural_no_zero');
                $this->form_validation->set_rules('marca', $fields['marca'], 'required');
                $this->form_validation->set_rules('modelo', $fields['modelo'], 'required');
                $this->form_validation->set_rules('numero_serie', $fields['numero_serie'], 'required');
            break;
            case 'escaners':
                $this->form_validation->set_rules('fecha_registro', $fields['fecha_registro'], 'required');
                $this->form_validation->set_rules('marca', $fields['marca'], 'required|is_natural_no_zero');
                $this->form_validation->set_rules('modelo', $fields['modelo'], 'required');
                $this->form_validation->set_rules('numero_serie', $fields['numero_serie'], 'required');
            break;
            case 'telefonos':
                $this->form_validation->set_rules('fecha_registro', $fields['fecha_registro'], 'required');
                $this->form_validation->set_rules('marca', $fields['marca'], 'required|is_natural_no_zero');
                $this->form_validation->set_rules('modelo', $fields['modelo'], 'required');
                $this->form_validation->set_rules('numero_serie', $fields['numero_serie'], 'required');
                $this->form_validation->set_rules('direccion_mac', $fields['direccion_mac'], '');
            break;
            case 'switches':
                $this->form_validation->set_rules('fecha_registro', $fields['fecha_registro'], 'required');
                $this->form_validation->set_rules('modelo', $fields['modelo'], 'required');
                $this->form_validation->set_rules('numero_serie', $fields['numero_serie'], 'required');
                $this->form_validation->set_rules('direccion_mac', $fields['direccion_mac'], '');
                $this->form_validation->set_rules('direccion_ip', $fields['direccion_ip'], '');
            break;
            case 'routers':
                $this->form_validation->set_rules('fecha_registro', $fields['fecha_registro'], 'required');
                $this->form_validation->set_rules('modelo', $fields['modelo'], 'required');
                $this->form_validation->set_rules('numero_serie', $fields['numero_serie'], 'required');
                $this->form_validation->set_rules('direccion_mac', $fields['direccion_mac'], '');
                $this->form_validation->set_rules('direccion_ip', $fields['direccion_ip'], '');
            break;
            case 'cablemodems':
                $this->form_validation->set_rules('fecha_registro', $fields['fecha_registro'], 'required');
                $this->form_validation->set_rules('marca', $fields['marca'], 'required');
                $this->form_validation->set_rules('modelo', $fields['modelo'], 'required');
                $this->form_validation->set_rules('numero_serie', $fields['numero_serie'], 'required');
                $this->form_validation->set_rules('direccion_mac', $fields['direccion_mac'], '');
                $this->form_validation->set_rules('direccion_ip', $fields['direccion_ip'], '');
            break;
            case 'emtas':
                $this->form_validation->set_rules('fecha_registro', $fields['fecha_registro'], 'required');
                $this->form_validation->set_rules('marca', $fields['marca'], 'required');
                $this->form_validation->set_rules('modelo', $fields['modelo'], 'required');
                $this->form_validation->set_rules('numero_serie', $fields['numero_serie'], 'required');
                $this->form_validation->set_rules('direccion_mac', $fields['direccion_mac'], '');
                $this->form_validation->set_rules('direccion_ip', $fields['direccion_ip'], '');
            break;
            case 'transcievers':
                $this->form_validation->set_rules('fecha_registro', $fields['fecha_registro'], 'required');
                $this->form_validation->set_rules('marca', $fields['marca'], '');
                $this->form_validation->set_rules('modelo', $fields['modelo'], 'required');
                $this->form_validation->set_rules('numero_serie', $fields['numero_serie'], 'required');
            break;
            case 'access_points':
                $this->form_validation->set_rules('fecha_registro', $fields['fecha_registro'], 'required');
                $this->form_validation->set_rules('marca', $fields['marca'], '');
                $this->form_validation->set_rules('modelo', $fields['modelo'], 'required');
                $this->form_validation->set_rules('numero_serie', $fields['numero_serie'], 'required');
                $this->form_validation->set_rules('direccion_mac', $fields['direccion_mac'], '');
                $this->form_validation->set_rules('direccion_ip', $fields['direccion_ip'], '');
            break;
            case 'accesorios':
                $this->form_validation->set_rules('fecha_registro', $fields['fecha_registro'], 'required');
                $this->form_validation->set_rules('tipo', $fields['tipo'], 'required|is_natural_no_zero');
                $this->form_validation->set_rules('marca', $fields['marca'], 'required');
                $this->form_validation->set_rules('modelo', $fields['modelo'], 'required');
                $this->form_validation->set_rules('numero_serie', $fields['numero_serie'], 'required');
                $this->form_validation->set_rules('capacidad_dd', $fields['capacidad_dd'], 'required|is_natural_no_zero');
            break;
        }
    }

    function format_date($date, $sw = 0) {
        //sw = 0 [external->internal], sw = 1 [internal->external]
        $return_date = 0;
        if($date) {
            $tmp = explode('-', $date);
            if(is_array($tmp)) {
                if(count($tmp) == 3) {
                    if($sw) {
                        list($year, $month, $day) = $tmp;
                        $return_date = $month. '-' . $day . '-' .$year;
                    } else {
                        list($month, $day, $year) = $tmp;
                        $return_date = $year.'-'.$month.'-'.$day;
                    }
                } else {
                    $return_date = NULL;
                }
            } else {
                $return_date = NULL;
            }
        } else {
            $return_date = NULL;
        }

        return $return_date;
    }
}
/* end of file */
